package samsung.sds.userManagement.service;

import java.util.List;

import samsung.sds.departmentManagement.model.DepartmentEntity;
import samsung.sds.roleManagement.model.RoleManagementEntity;
import samsung.sds.system.common.baseQuery.BaseServiceInterface;
import samsung.sds.userManagement.model.UserEntity;
/**
 * @author hao.wen
 * @craeteDate 2016-01-08
 * 
 * userManagement的service组件
 */
public interface UserManagementService extends BaseServiceInterface<UserEntity>{
	
	/**
	 * 根据用户名获取该用户的角色
	 * @param username 用户名
	 * @return 用户角色集合
	 */
	List<String> queryUserRole(String username);
	
	/**
	 * 根据用户名获取该用户的所有角色对象
	 * @param username 用户名
	 * @return 角色对象的集合
	 */
	List<RoleManagementEntity> getUserRoles(String username);
	
	/**
	 * 检查用户名是否重复
	 * @param username 用户名
	 * @return 是否重复
	 */
	boolean checkUserNameRepeat(String username);
	
	/**
	 * 检查密码是否改变
	 * @param username 用户名
	 * @param password 加密后密码
	 * @return 是否改变
	 */
	boolean checkPassword(String username,String password);

	/**
	 * 更新组织机构下的用户 
	 * @param user 用户对象
	 * @return 改变的记录数
	 */
	int updateUser(String deptId, String[] userNames);
	
	/**
	 * 更新用户组织机构
	 * @param newDeptId	用户将要归属为哪个组织机构的ID
	 * @param oldDeptId	用户以前归属的组织机构的ID
	 * @return
	 */
	int updateUserDepartment( String newDeptId, String oldDeptId );
	
	/**
	 * 查询组织机构下是否存在用户
	 * @param departmentEntities
	 * @return
	 */
	int queryDepartmentUserCount( List<DepartmentEntity> departmentEntities );


	int updatePersonalInfo(UserEntity user);
}
